iT邦幫忙

2026 iThome 鐵人賽

DAY 26
0

昨天講環境變數、URL、log 這些日常操作。今天收尾兩件事:服務帳號的權限邊界,以及一件我覺得所有雲端教學都該做但很少做的事,在同一頁附上刪除指令。

服務帳號與存取控制

Cloud Run 預設可以設成允許匿名存取(--allow-unauthenticated),做 demo 很方便。真的要 agent 互打的話會需要帶 token,這部分我在 codelab 階段沒有完整實作,先標一句未實測,不寫成教學。

「允許匿名存取」聽起來只是個方便的開關,代價卻不小:等於任何知道這個 URL 的人都能呼叫你的 agent。demo 給評審看的時候這是優點,對方不用先跟你要 token 就能試。但一旦這個 agent 背後真的接了要付費的 LLM 呼叫,匿名就代表任何人都能刷你的額度,這在正式環境是不能接受的風險,跟 Day 24 講的 --min 1 持續計費是同一種性質。

要讓 agent 互打帶 token,方向大致是把呼叫方的 service account 加進被呼叫服務的 IAM invoker 名單,呼叫時附上識別身分的憑證。這條路我沒有真的走過,方向是從文件推的,不寫成教學步驟,也不假裝自己驗證過。

最後一段:刪除指令

gcloud run services delete <svc> --region <region>

我想把這件事講成一個原則,而不只是一條指令:

部署任何雲端資源時,同一頁就附上刪除指令。

不要放在文章最後、不要放在附錄、不要寫成「記得清理喔」。就寫在建立指令的正下方。

理由很簡單。教學文件的讀者跟著做完 demo 之後就走了,沒有人會回頭找清理步驟。做完 demo 的心理狀態是「跑起來了,收工」,不是「翻到文件最後一頁找清理段落」。而昨天講的 --min 1 這種參數會在他忘記之後繼續計費。教學作者省下的那三行,由讀者的信用卡付。

要點名的清單:--min-instances、常駐 VM、Cloud SQL 實例、負載平衡器、保留的靜態 IP。這幾樣的共同點是「沒有流量也收錢」。這件事之所以反直覺,是因為 Cloud Run 本身「零流量零費用」的印象太深,讀者會帶著這個印象去理解整個專案,卻忽略了掛在旁邊的這幾樣資源走的是完全不同的計費模型,常態計費,不跟著流量走。

小結

Cloud Run 這三篇的重點:部署本身很簡單,難的是那些不會報錯的東西。佔位符號不報錯、計費參數不報錯、忘記刪除也不報錯。

所以檢查要靠量測,讀輸出不夠。


上一篇
Day 25:Cloud Run(中)環境變數、服務 URL 與看 log
下一篇
Day 27:Agent Runtime 與 Cloud Run 差在哪
系列文
ADK × A2A × Cloud Run 打造可部署、可互通的 Agent 系統 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言